package ar.edu.unlp.info.tesis.domain;

import javax.persistence.Transient;

import org.codehaus.jackson.annotate.JsonIgnoreProperties;
import org.codehaus.jackson.annotate.JsonSubTypes;
import org.codehaus.jackson.annotate.JsonTypeInfo;


/**
 * 
 * https://github.com/adlnet/xAPI-Spec/blob/master/xAPI.md#object
 *
 */

@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "objectType")
@JsonSubTypes({ @JsonSubTypes.Type(value = Agent.class, name = "AGENT"),
@JsonSubTypes.Type(value = Group.class, name = "GROUP"),
@JsonSubTypes.Type(value = Activity.class, name = "ACTIVITY"),
@JsonSubTypes.Type(value = Statement.class, name = "STATEMENT"),
@JsonSubTypes.Type(value = StatementRef.class, name = "STATEMENTREF")
})
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public interface StatementObject {

	public String AGENT="AGENT";
	public String GROUP= "GROUP";
	public String ACTIVITY = "ACTIVITY";
	public String STATEMENT="STATEMENT";
	public String STATEMENTREF="STATEMENTREF";
	
	@Transient
	public String getObjectType();
	
	@Transient
	public String getLabelFormat();
	
	public String getId();
	
	public void setId(String id);
	
}
